#include <stdio.h>
// 1 定义一个函数fsum()，计算m=1-2+3-4+…+19-20的结果，使用return返回结果，在main函数中进行测试fsum函数
int fsum(){
	int sum = 0;
	for(int i =1;i<=20;i++){
		sum += (i%2?1:-1)*i;
	}
	return sum;
}

// 2 定义一个求和函数add(int a,int b),使用return返回求和结果，在main函数中进行测试add函数。
double add (int a,int b){
	return a+b;
}

// 3 定义一个函数reverse(),在函数中定义一个数组，对数组进行反转操作。
void reverse(){
	const int size = 5;
	int arr [size];
	for(int i = 0;i<size;i++){
		printf("输入第%d个元素",i+1);
		scanf("%d",&arr[i]);
	}
	// 执行数组元素的反转
	for(int i =0,j=size-1;i<j;i++,j--){
		int t = arr[i];
		arr[i] = arr[j];
		arr[j] = t;
	}
	// 遍历数组，输出元素
	printf("反转后的数组是:");
	for(int i =0;i<size;i++){
		printf("%d,",arr[i]);
	}
}

// 4 定义一个函数fact(int n)求n（n<6）的阶乘，通过return返回。
int fact(int n){
	if(n==0){
		return 1;
	}
	int sum = 1;
	for(int i = n;i>0;i--){
		sum *= i;
	}
	return sum;
}

// 5 定义一个函数统计键盘输入的6位整数，其个位数在数字中的出现次数，使用return返回统计结果
int fn5(){
	int count = 0;
	int arr[6];
	for(int i =0;i<6;i++){
		printf("输入第%d位数字",i+1);
		scanf("%d",&arr[i]);
	}
	int g  = arr[5];
	for(int i=0;i<6;i++){
		if(g==arr[i]){
			count++;
		}
	}
	return count ;
}

// 5 定义一个函数实现计算器功能，键盘输入两个操作数和操作符，使用return返回计算的结果。
double calculator (){
	double result = 0;
	double n,m;
	char op; 
	printf("输入第1个操作数：");
	scanf("%lf",&m);
	printf("输入第2个操作数：");
	scanf("%lf",&n);
	fflush(stdin);
	printf("输入运算符(+-/*)：");
	scanf("%c",&op);	
	fflush(stdin);
	switch(op){
		case '+':{
			result = m+n;
			break;
		}
		case '/':{
			if(n!=0){
				result = m/n;
			}
			break;
		}
		case '*':{
			result = m*n;
			break;
		}
		case '-':{
			result = m-n;
			break;
		}
		default:{
			printf("非法的运算符！");
			break;
		}
	}
	return result;
}

int main(){
	// 1 测试
	// int rt = fsum();
	// printf("sum=%d",rt);// sum=-10
	// 2 测试
	// double rt = add (100,11);
	// printf("rt=%.1lf",rt);
	// 3 测试
	// reverse();
	// 4 测试
	// printf("%d",fact(0));
	// 5 测试
	// printf("%d",fn5());
	// 6 测试
	printf("%.1lf",calculator());
	return 0;
}